home *** CD-ROM | disk | FTP | other *** search
/ All for Cell Phones: Sony Ericsson / Sony-Ericsson 2004.iso / Java / cellhtml / CellHtml.jar / HTMLStream.class (.txt) < prev    next >
Encoding:
Java Class File  |  2001-09-20  |  22.5 KB  |  1,105 lines

  1. import java.io.DataInputStream;
  2. import java.io.InputStream;
  3. import java.io.OutputStream;
  4. import java.util.Vector;
  5. import javax.microedition.io.Connector;
  6. import javax.microedition.io.HttpConnection;
  7. import javax.microedition.lcdui.Font;
  8. import javax.microedition.lcdui.Image;
  9.  
  10. public class HTMLStream {
  11.    // $FF: renamed from: ├║ javax.microedition.io.HttpConnection
  12.    HttpConnection field_0;
  13.    // $FF: renamed from: is java.io.InputStream
  14.    InputStream field_1;
  15.    int total;
  16.    // $FF: renamed from: ├╗ int
  17.    int field_2;
  18.    byte[] buffer;
  19.    // $FF: renamed from: ├╝ java.lang.String
  20.    String field_3;
  21.    // $FF: renamed from: ├╜ java.lang.String
  22.    String field_4;
  23.    // $FF: renamed from: ├╛ java.lang.String
  24.    String field_5;
  25.    // $FF: renamed from: vx int
  26.    public static int field_6 = 0;
  27.    // $FF: renamed from: vy int
  28.    public static int field_7 = 0;
  29.    public static int slen;
  30.    // $FF: renamed from: sv java.util.Vector
  31.    Vector field_8;
  32.    int CanvasWidth;
  33.    int CanvasHeight;
  34.    Font font;
  35.    int fontHeight;
  36.    // $FF: renamed from: ├┐ int
  37.    int field_9 = 3;
  38.    // $FF: renamed from: ─Ç int
  39.    int field_10 = 3;
  40.    // $FF: renamed from: ─ü int
  41.    int field_11 = 16777215;
  42.    // $FF: renamed from: ─é int
  43.    int field_12 = 0;
  44.    public static int lcolor = 255;
  45.    // $FF: renamed from: ─â java.util.Vector
  46.    Vector field_13 = new Vector(1);
  47.    // $FF: renamed from: hs HotSpot
  48.    HotSpot field_14;
  49.    // $FF: renamed from: ─ä boolean
  50.    boolean field_15 = false;
  51.    public static int hsindex = 0;
  52.    public static Vector hsvector = new Vector(1);
  53.    public static int formindex = -1;
  54.    public static Vector formvector = new Vector(1);
  55.    // $FF: renamed from: ─à boolean
  56.    boolean field_16 = false;
  57.    // $FF: renamed from: ─å boolean
  58.    boolean field_17 = false;
  59.    // $FF: renamed from: ─ç boolean
  60.    boolean field_18 = false;
  61.    // $FF: renamed from: ─ê java.lang.String
  62.    String field_19 = "";
  63.    // $FF: renamed from: ─ë boolean
  64.    boolean field_20 = false;
  65.    // $FF: renamed from: ─è boolean
  66.    boolean field_21 = false;
  67.    // $FF: renamed from: ─ï boolean
  68.    boolean field_22 = false;
  69.    // $FF: renamed from: ─î boolean
  70.    boolean field_23 = false;
  71.    // $FF: renamed from: ─ì int
  72.    int field_24 = 0;
  73.    // $FF: renamed from: ─Ä int[]
  74.    int[] field_25 = new int[8];
  75.    // $FF: renamed from: ─Å int
  76.    int field_26 = 16;
  77.    // $FF: renamed from: GF GifFrame
  78.    public static GifFrame field_27;
  79.    public static String ErrorLine;
  80.  
  81.    HTMLStream(String var1) {
  82.       this.HTMLStreamX(var1, "");
  83.    }
  84.  
  85.    HTMLStream(String var1, String var2) {
  86.       this.HTMLStreamX(var1, var2);
  87.    }
  88.  
  89.    public void HTMLStreamX(String var1, String var2) {
  90.       Runtime.getRuntime().gc();
  91.       MapCanvas.LoadFlag = true;
  92.       CellHtml.mc.repaint();
  93.       CellHtml.mc.serviceRepaints();
  94.       if (!var1.startsWith("http://")) {
  95.          var1 = "http://" + var1;
  96.       }
  97.  
  98.       this.field_3 = var1;
  99.       this.field_4 = Tools.GetURLRoot(this.field_3);
  100.       this.field_5 = Tools.GetURLBase(this.field_3);
  101.       this.total = 0;
  102.       this.field_2 = 0;
  103.       this.buffer = null;
  104.       short var3 = 999;
  105.  
  106.       try {
  107.          if ((this.buffer = CellHtml.cachepool.getCache(var1)) == null) {
  108.             this.field_0 = (HttpConnection)Connector.open(var1);
  109.             if (var2.length() > 0) {
  110.                this.field_0.setRequestMethod("POST");
  111.                this.field_0.setRequestProperty("User-Agent", "Profile/MIDP-1.0 Configuration/CLDC-1.0");
  112.                this.field_0.setRequestProperty("Content-Language", "en-US");
  113.                this.field_0.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
  114.                this.field_0.setRequestProperty("Content-Length", "" + var2.length());
  115.                this.field_0.setRequestProperty("Cache-Control", "no-store");
  116.                this.field_0.setRequestProperty("Pragma", "no-cache");
  117.                this.field_0.setRequestProperty("Expires", "Tue, 1 Jul 1997 00:00:00 GMT");
  118.                OutputStream var4 = this.field_0.openOutputStream();
  119.                var4.write(var2.getBytes());
  120.                var4.flush();
  121.                var4.close();
  122.             }
  123.  
  124.             if ((this.field_0.getResponseCode() == 301 || this.field_0.getResponseCode() == 302) && var2.length() == 0) {
  125.                var1 = this.field_0.getHeaderField("Location");
  126.                if (var1 != null) {
  127.                   CellHtml.pageurl = var1;
  128.                }
  129.  
  130.                this.field_3 = var1;
  131.                this.field_4 = Tools.GetURLRoot(this.field_3);
  132.                this.field_5 = Tools.GetURLBase(this.field_3);
  133.                this.field_0.close();
  134.                this.field_0 = (HttpConnection)Connector.open(var1);
  135.             }
  136.  
  137.             if (this.field_0.getResponseCode() != 200) {
  138.                throw new Exception();
  139.             }
  140.  
  141.             this.total = (int)this.field_0.getLength();
  142.             if (this.total > 0) {
  143.                this.buffer = new byte[this.total];
  144.                DataInputStream var8 = this.field_0.openDataInputStream();
  145.                var8.readFully(this.buffer);
  146.                var8.close();
  147.                if (var2.length() == 0 && var1.indexOf(63) == -1) {
  148.                   CellHtml.cachepool.setCache(var1, this.buffer);
  149.                }
  150.             } else {
  151.                this.field_1 = this.field_0.openInputStream();
  152.             }
  153.          } else {
  154.             this.total = this.buffer.length;
  155.          }
  156.       } catch (Exception var7) {
  157.          String var5 = "<center>CellHTML Error<br>" + var3 + "</center><hr size=2>Document <u>" + this.field_3 + "</u> is not found.";
  158.          if (var3 == 999) {
  159.             var5 = var5 + "<hr>" + ((Throwable)var7).toString();
  160.          }
  161.  
  162.          this.buffer = var5.getBytes();
  163.          this.total = this.buffer.length;
  164.       }
  165.  
  166.       this.field_8 = new Vector(32);
  167.       this.method_2();
  168.       this.buffer = null;
  169.  
  170.       try {
  171.          if (this.field_1 != null) {
  172.             this.field_1.close();
  173.             this.field_1 = null;
  174.          }
  175.  
  176.          if (this.field_0 != null) {
  177.             this.field_0.close();
  178.             this.field_0 = null;
  179.          }
  180.       } catch (Exception var6) {
  181.       }
  182.  
  183.       this.CanvasWidth = MapCanvas.CanvasWidth;
  184.       this.CanvasHeight = MapCanvas.CanvasHeight;
  185.       this.font = MapCanvas.font;
  186.       this.fontHeight = 0;
  187.       MapCanvas.VG.reset();
  188.       this.render(MapCanvas.VG);
  189.       this.field_8.removeAllElements();
  190.       this.field_8 = null;
  191.       MapCanvas.LoadFlag = false;
  192.    }
  193.  
  194.    // $FF: renamed from: ├║ () java.lang.String
  195.    String method_0() {
  196.       StringBuffer var1 = new StringBuffer();
  197.       if (this.total > 0) {
  198.          while(this.field_2 < this.total) {
  199.             char var5 = (char)this.buffer[this.field_2];
  200.             ++this.field_2;
  201.             if (var5 == '\n') {
  202.                break;
  203.             }
  204.  
  205.             if (var5 != '\r') {
  206.                var1.append(var5);
  207.             }
  208.          }
  209.  
  210.          if (var1.length() == 0) {
  211.             return this.field_2 == this.total ? null : "";
  212.          } else {
  213.             return var1.toString();
  214.          }
  215.       } else {
  216.          int var2 = -1;
  217.  
  218.          try {
  219.             while((var2 = this.field_1.read()) != -1) {
  220.                char var3 = (char)var2;
  221.                if (var3 == '\n') {
  222.                   break;
  223.                }
  224.  
  225.                if (var3 != '\r') {
  226.                   var1.append(var3);
  227.                }
  228.             }
  229.          } catch (Exception var4) {
  230.          }
  231.  
  232.          if (var1.length() == 0) {
  233.             return var2 == -1 ? null : "";
  234.          } else {
  235.             return var1.toString();
  236.          }
  237.       }
  238.    }
  239.  
  240.    // $FF: renamed from: ├╗ (java.lang.String) java.lang.String
  241.    String method_1(String var1) {
  242.       if (var1.startsWith("http://")) {
  243.          return var1;
  244.       } else if (var1.startsWith("#")) {
  245.          return CellHtml.pageurl;
  246.       } else if (!var1.startsWith("/") && !var1.startsWith("\\")) {
  247.          return this.field_5 + var1;
  248.       } else {
  249.          var1 = var1.substring(1);
  250.          return this.field_4 + var1;
  251.       }
  252.    }
  253.  
  254.    // $FF: renamed from: ├╝ () void
  255.    void method_2() {
  256.       String var4 = "";
  257.  
  258.       String var5;
  259.       while((var5 = this.method_0()) != null) {
  260.          var5 = var5.trim();
  261.          if (var5.length() != 0) {
  262.             if (var4.length() > 0) {
  263.                var4 = var4 + " ";
  264.             }
  265.  
  266.             do {
  267.                int var1;
  268.                if ((var1 = var5.indexOf("<")) != -1) {
  269.                   var4 = var4 + var5.substring(0, var1);
  270.                   if (var4.length() > 0) {
  271.                      this.field_8.addElement(var4);
  272.                   }
  273.  
  274.                   var4 = "<";
  275.                   var5 = var5.substring(var1 + 1);
  276.                }
  277.  
  278.                if ((var1 = var5.indexOf(">")) != -1) {
  279.                   var4 = var4 + var5.substring(0, var1 + 1);
  280.                   if (var4.length() > 0) {
  281.                      this.field_8.addElement(var4);
  282.                   }
  283.  
  284.                   var4 = "";
  285.                   var5 = var5.substring(var1 + 1);
  286.                }
  287.             } while(var5.indexOf("<") != -1 || var5.indexOf(">") != -1);
  288.  
  289.             var4 = var4 + var5;
  290.          }
  291.       }
  292.  
  293.       if (var4.length() > 0) {
  294.          this.field_8.addElement(var4);
  295.       }
  296.  
  297.    }
  298.  
  299.    // $FF: renamed from: ├╜ (java.lang.String) java.util.Vector
  300.    Vector method_3(String var1) {
  301.       Vector var2 = new Vector(1);
  302.       String var3 = "";
  303.  
  304.       String var4;
  305.       for(int var5 = 1; (var4 = Tools.GetTokenZ(var1, var5, '"', true)) != null; ++var5) {
  306.          if (var5 % 2 == 0) {
  307.             var4 = Tools.RepString(var4, " ", "_");
  308.          }
  309.  
  310.          var3 = var3 + var4;
  311.       }
  312.  
  313.       var3 = Tools.RepString(var3, "= ", "=");
  314.       var3 = Tools.RepString(var3, "<", "");
  315.       var3 = Tools.RepString(var3, "/>", ">");
  316.       var3 = Tools.RepString(var3, ">", "");
  317.  
  318.       for(int var11 = 1; (var4 = Tools.GetTokenZ(var3, var11, ' ', true)) != null; ++var11) {
  319.          var2.addElement(var4);
  320.       }
  321.  
  322.       return var2;
  323.    }
  324.  
  325.    public int strWidth(String var1) {
  326.       return this.font.stringWidth(var1);
  327.    }
  328.  
  329.    int strHeight() {
  330.       if (this.fontHeight == 0) {
  331.          this.fontHeight = this.font.getHeight() - 2;
  332.       }
  333.  
  334.       return this.fontHeight;
  335.    }
  336.  
  337.    // $FF: renamed from: ├╛ () void
  338.    void method_4() {
  339.       this.field_13.removeAllElements();
  340.    }
  341.  
  342.    // $FF: renamed from: ├┐ (VirtualGraphics, java.lang.String, int, int) void
  343.    void method_5(VirtualGraphics var1, String var2, int var3, int var4) {
  344.       if (this.field_15) {
  345.          this.field_15 = false;
  346.          if (var2.startsWith(" ")) {
  347.             HotSpot var10000 = this.field_14;
  348.             var10000.bx += slen;
  349.          }
  350.       }
  351.  
  352.       if (!this.field_18) {
  353.          var1.drawString(var2, var3, var4, 20);
  354.          if (this.field_16) {
  355.             var1.drawString(var2, var3 + 1, var4, 20);
  356.          }
  357.  
  358.          if (this.field_21 || this.field_23) {
  359.             int var5 = var4 + this.strHeight();
  360.             if (this.field_22 && var3 != 0) {
  361.                var1.drawLine(var3 + slen, var5, var3 + this.strWidth(var2), var5);
  362.             } else {
  363.                var1.drawLine(var3, var5, var3 + this.strWidth(var2), var5);
  364.             }
  365.  
  366.             this.field_22 = false;
  367.          }
  368.       } else {
  369.          boolean var12 = false;
  370.          boolean var6 = false;
  371.          if (this.field_16) {
  372.             var12 = true;
  373.          }
  374.  
  375.          if (this.field_21 || this.field_23) {
  376.             var6 = true;
  377.          }
  378.  
  379.          CenterText var7 = new CenterText(var2, var12, var6);
  380.          this.field_13.addElement(var7);
  381.          if (this.field_20) {
  382.             String var8 = "";
  383.  
  384.             for(int var9 = 0; var9 < this.field_13.size(); ++var9) {
  385.                var7 = (CenterText)this.field_13.elementAt(var9);
  386.                var8 = var8 + var7.text;
  387.             }
  388.  
  389.             int var10 = (this.CanvasWidth - this.strWidth(var8)) / 2;
  390.  
  391.             for(int var11 = 0; var11 < this.field_13.size(); ++var11) {
  392.                var7 = (CenterText)this.field_13.elementAt(var11);
  393.                var1.drawString(var7.text, var10, var4, 20);
  394.                if (var7.bold) {
  395.                   var1.drawString(var7.text, var10 + 1, var4, 20);
  396.                }
  397.  
  398.                if (var7.underline) {
  399.                   if (var11 == 0 && var7.text.startsWith(" ")) {
  400.                      var1.drawLine(var10 + slen, var4 + this.strHeight(), var10 + this.strWidth(var7.text), var4 + this.strHeight());
  401.                   } else {
  402.                      var1.drawLine(var10, var4 + this.strHeight(), var10 + this.strWidth(var7.text), var4 + this.strHeight());
  403.                   }
  404.                }
  405.  
  406.                var10 += this.strWidth(var7.text);
  407.             }
  408.  
  409.             this.method_4();
  410.          }
  411.       }
  412.  
  413.       this.field_20 = false;
  414.    }
  415.  
  416.    // $FF: renamed from: ─Ç () void
  417.    void method_6() {
  418.       if (field_6 + this.field_9 < this.CanvasWidth) {
  419.          field_6 += this.field_9;
  420.       } else {
  421.          field_6 = this.field_24 * this.field_26 + this.field_9;
  422.          field_7 += this.strHeight();
  423.       }
  424.  
  425.    }
  426.  
  427.    void render(VirtualGraphics var1) {
  428.       field_6 = 0;
  429.       field_7 = 0;
  430.       slen = this.strWidth(" ");
  431.       this.field_16 = false;
  432.       this.field_17 = false;
  433.       this.field_18 = false;
  434.       this.field_19 = "";
  435.       this.field_20 = false;
  436.       this.field_21 = false;
  437.       this.field_22 = false;
  438.       this.field_23 = false;
  439.       this.field_24 = 0;
  440.       this.field_15 = false;
  441.       hsindex = 0;
  442.       hsvector.removeAllElements();
  443.       formindex = -1;
  444.       FormObj var7 = null;
  445.       formvector.removeAllElements();
  446.       this.field_11 = 16777215;
  447.       this.field_12 = 0;
  448.       lcolor = 255;
  449.       SelectObj var8 = null;
  450.       OptionObj var9 = null;
  451.       boolean var10 = false;
  452.       String var11 = "";
  453.       TextObj var12 = null;
  454.       boolean var13 = false;
  455.       String var14 = "";
  456.       var1.setBgColor(this.field_11);
  457.       var1.setColor(this.field_12);
  458.       Tools.initColorStack();
  459.       Tools.pushColorStack(this.field_12);
  460.       ErrorLine = null;
  461.  
  462.       for(int var15 = 0; var15 < this.field_8.size(); ++var15) {
  463.          String var2;
  464.          if (ErrorLine == null) {
  465.             var2 = (String)this.field_8.elementAt(var15);
  466.             this.field_8.setElementAt((Object)null, var15);
  467.          } else {
  468.             var2 = ErrorLine;
  469.             ErrorLine = null;
  470.          }
  471.  
  472.          var2 = var2.trim();
  473.          if (var2.length() != 0) {
  474.             String var3 = var2.toLowerCase();
  475.             if (var3.endsWith("-->")) {
  476.                this.field_17 = false;
  477.             } else if (var3.equals("</head>")) {
  478.                this.field_17 = false;
  479.             } else if (var3.equals("</title>")) {
  480.                this.field_17 = false;
  481.             } else if (!this.field_17) {
  482.                if (var3.startsWith("<!--")) {
  483.                   this.field_17 = true;
  484.                } else if (var3.equals("<head>")) {
  485.                   this.field_17 = true;
  486.                } else if (var3.equals("<title>")) {
  487.                   this.field_17 = true;
  488.                } else if (var3.startsWith("<")) {
  489.                   if (var3.startsWith("<a")) {
  490.                      if (this.field_18) {
  491.                         this.field_18 = false;
  492.                         if (field_6 != this.field_24 * this.field_26) {
  493.                            this.field_20 = true;
  494.                            this.method_5(var1, "", field_6, field_7);
  495.                            field_6 = this.field_24 * this.field_26;
  496.                            field_7 += this.strHeight();
  497.                         }
  498.                      }
  499.  
  500.                      this.field_14 = new HotSpot();
  501.                      this.field_14.setBxBy(field_6, field_7);
  502.                      this.method_6();
  503.                      this.field_15 = true;
  504.                      Vector var42 = this.method_3(var2);
  505.                      boolean var53 = false;
  506.  
  507.                      for(int var64 = 0; var64 < var42.size(); ++var64) {
  508.                         String var76 = (String)var42.elementAt(var64);
  509.                         if (var76.toLowerCase().startsWith("href=")) {
  510.                            var53 = true;
  511.                            this.field_14.setObj(0, this.method_1(var76.substring(5)), this.strHeight());
  512.                         }
  513.                      }
  514.  
  515.                      if (var53) {
  516.                         var1.setColor(lcolor);
  517.                         this.field_23 = true;
  518.                         this.field_22 = true;
  519.                      } else {
  520.                         this.field_14 = null;
  521.                         this.field_15 = false;
  522.                      }
  523.                   } else if (var3.equals("</a>")) {
  524.                      this.field_15 = false;
  525.                      this.method_6();
  526.                      if (this.field_14 != null) {
  527.                         this.field_14.setExEy(field_6, field_7);
  528.                         hsvector.addElement(this.field_14);
  529.                      }
  530.  
  531.                      var1.setColor(this.field_12);
  532.                      this.field_23 = false;
  533.                   } else if (var3.equals("<b>")) {
  534.                      this.field_16 = true;
  535.                   } else if (var3.equals("</b>")) {
  536.                      this.field_16 = false;
  537.                   } else if (var3.startsWith("<body")) {
  538.                      Vector var41 = this.method_3(var2);
  539.  
  540.                      for(int var52 = 0; var52 < var41.size(); ++var52) {
  541.                         String var63 = (String)var41.elementAt(var52);
  542.                         if (var63.toLowerCase().startsWith("bgcolor=")) {
  543.                            this.field_11 = Tools.GetColor(var63.substring(8));
  544.                            var1.setBgColor(this.field_11);
  545.                         }
  546.  
  547.                         if (var63.toLowerCase().startsWith("text=")) {
  548.                            this.field_12 = Tools.GetColor(var63.substring(5));
  549.                            Tools.initColorStack();
  550.                            Tools.pushColorStack(this.field_12);
  551.                            var1.setColor(this.field_12);
  552.                         }
  553.  
  554.                         if (var63.toLowerCase().startsWith("link=")) {
  555.                            lcolor = Tools.GetColor(var63.substring(5));
  556.                         }
  557.  
  558.                         if (var63.toLowerCase().startsWith("background=")) {
  559.                            String var75 = this.method_1(var63.substring(11));
  560.                            Image var80 = Tools.LoadHtmlImage(var75);
  561.                            var1.setBgImage(var80);
  562.                         }
  563.                      }
  564.                   } else if (var3.startsWith("<br")) {
  565.                      if (field_6 != this.field_24 * this.field_26) {
  566.                         this.field_20 = true;
  567.                         this.method_5(var1, "", field_6, field_7);
  568.                      }
  569.  
  570.                      field_6 = this.field_24 * this.field_26;
  571.                      field_7 += this.strHeight();
  572.                   } else if (var3.equals("<center>")) {
  573.                      if (field_6 != this.field_24 * this.field_26) {
  574.                         field_6 = this.field_24 * this.field_26;
  575.                         field_7 += this.strHeight();
  576.                      }
  577.  
  578.                      this.field_18 = true;
  579.                      this.field_19 = "";
  580.                      this.method_4();
  581.                   } else if (var3.equals("</center>")) {
  582.                      if (field_6 != this.field_24 * this.field_26) {
  583.                         this.field_20 = true;
  584.                         this.method_5(var1, "", field_6, field_7);
  585.                         field_6 = this.field_24 * this.field_26;
  586.                         field_7 += this.strHeight();
  587.                      }
  588.  
  589.                      this.field_18 = false;
  590.                   } else if (var3.startsWith("<form")) {
  591.                      String var40 = "get";
  592.                      String var51 = "";
  593.                      Vector var62 = this.method_3(var2);
  594.  
  595.                      for(int var74 = 0; var74 < var62.size(); ++var74) {
  596.                         String var79 = (String)var62.elementAt(var74);
  597.                         if (var79.toLowerCase().startsWith("method=")) {
  598.                            var40 = var79.substring(7).toLowerCase();
  599.                         }
  600.  
  601.                         if (var79.toLowerCase().startsWith("action=")) {
  602.                            var51 = var79.substring(7);
  603.                         }
  604.                      }
  605.  
  606.                      if (field_6 != this.field_24 * this.field_26) {
  607.                         this.field_20 = true;
  608.                         this.method_5(var1, "", field_6, field_7);
  609.                         field_6 = this.field_24 * this.field_26;
  610.                         field_7 += this.strHeight();
  611.                      }
  612.  
  613.                      var7 = new FormObj(var40, this.method_1(var51));
  614.                      ++formindex;
  615.                   } else if (var3.equals("</form>")) {
  616.                      if (var7 != null) {
  617.                         formvector.addElement(var7);
  618.                      }
  619.  
  620.                      var7 = null;
  621.                   } else if (var3.startsWith("<font")) {
  622.                      Tools.pushColorStack(this.field_12);
  623.                      Vector var39 = this.method_3(var2);
  624.  
  625.                      for(int var50 = 0; var50 < var39.size(); ++var50) {
  626.                         String var61 = (String)var39.elementAt(var50);
  627.                         if (var61.toLowerCase().startsWith("color=")) {
  628.                            this.field_12 = Tools.GetColor(var61.substring(6));
  629.                            var1.setColor(this.field_12);
  630.                         }
  631.                      }
  632.                   } else if (var3.equals("</font>")) {
  633.                      this.field_12 = Tools.popColorStack();
  634.                      var1.setColor(this.field_12);
  635.                   } else if (var3.startsWith("<hr")) {
  636.                      int var38 = 1;
  637.                      Vector var49 = this.method_3(var2);
  638.  
  639.                      for(int var60 = 0; var60 < var49.size(); ++var60) {
  640.                         String var73 = (String)var49.elementAt(var60);
  641.                         if (var73.toLowerCase().startsWith("size=")) {
  642.                            var38 = Tools.toInt(var73.substring(5));
  643.                            if (var38 == 0) {
  644.                               var38 = 1;
  645.                            }
  646.                         }
  647.                      }
  648.  
  649.                      if (field_6 != this.field_24 * this.field_26) {
  650.                         this.field_20 = true;
  651.                         this.method_5(var1, "", field_6, field_7);
  652.                         field_6 = this.field_24 * this.field_26;
  653.                         field_7 += this.strHeight();
  654.                      }
  655.  
  656.                      field_7 += this.field_10;
  657.                      var1.fillRect(0, field_7, this.CanvasWidth, var38);
  658.                      field_7 += var38 + this.field_10;
  659.                   } else if (var3.startsWith("<h")) {
  660.                      if (var3.equals("<h1>") || var3.equals("<h2>") || var3.equals("<h3>") || var3.equals("<h4>") || var3.equals("<h5>") || var3.equals("<h6>")) {
  661.                         if (field_6 != this.field_24 * this.field_26) {
  662.                            this.field_20 = true;
  663.                            this.method_5(var1, "", field_6, field_7);
  664.                            field_6 = this.field_24 * this.field_26;
  665.                            field_7 += this.strHeight();
  666.                         }
  667.  
  668.                         this.field_16 = true;
  669.                      }
  670.                   } else if (var3.startsWith("</h")) {
  671.                      if (var3.equals("</h1>") || var3.equals("</h2>") || var3.equals("</h3>") || var3.equals("</h4>") || var3.equals("</h5>") || var3.equals("</h6>")) {
  672.                         if (field_6 != this.field_24 * this.field_26) {
  673.                            this.field_20 = true;
  674.                            this.method_5(var1, "", field_6, field_7);
  675.                            field_6 = this.field_24 * this.field_26;
  676.                            field_7 += this.strHeight();
  677.                         }
  678.  
  679.                         this.field_16 = false;
  680.                      }
  681.                   } else if (var3.startsWith("<img")) {
  682.                      String var37 = "";
  683.                      Vector var48 = this.method_3(var2);
  684.  
  685.                      for(int var59 = 0; var59 < var48.size(); ++var59) {
  686.                         String var70 = (String)var48.elementAt(var59);
  687.                         if (var70.toLowerCase().startsWith("src=")) {
  688.                            var37 = this.method_1(var70.substring(4));
  689.                         }
  690.                      }
  691.  
  692.                      if (field_6 != this.field_24 * this.field_26) {
  693.                         this.field_20 = true;
  694.                         this.method_5(var1, "", field_6, field_7);
  695.                         field_6 = this.field_24 * this.field_26;
  696.                         field_7 += this.strHeight();
  697.                      }
  698.  
  699.                      field_27 = new GifFrame();
  700.                      Image var71 = Tools.LoadHtmlImage(var37);
  701.                      if (var71 == null) {
  702.                         var71 = MapCanvas.NoneImage;
  703.                      }
  704.  
  705.                      field_7 += this.field_10;
  706.                      if (this.field_18) {
  707.                         var1.drawImage(var71, this.CanvasWidth / 2, field_7, 17);
  708.                         field_27.setXY(this.CanvasWidth / 2, field_7);
  709.                      } else {
  710.                         var1.drawImage(var71, 0, field_7, 20);
  711.                         field_27.setXY(0, field_7);
  712.                      }
  713.  
  714.                      if (field_27.size() > 1) {
  715.                         VirtualGraphics.GFV.addElement(field_27);
  716.                      }
  717.  
  718.                      field_27 = null;
  719.                      field_7 += var71.getHeight() + this.field_10;
  720.                      Object var72 = null;
  721.                   } else if (var3.startsWith("<input")) {
  722.                      String var36 = "";
  723.                      String var47 = "";
  724.                      String var58 = "";
  725.                      boolean var69 = false;
  726.                      Vector var78 = this.method_3(var2);
  727.  
  728.                      for(int var81 = 0; var81 < var78.size(); ++var81) {
  729.                         String var22 = (String)var78.elementAt(var81);
  730.                         if (var22.toLowerCase().startsWith("type=")) {
  731.                            var36 = var22.substring(5).toLowerCase();
  732.                         }
  733.  
  734.                         if (var22.toLowerCase().startsWith("name=")) {
  735.                            var47 = var22.substring(5);
  736.                         }
  737.  
  738.                         if (var22.toLowerCase().startsWith("value=")) {
  739.                            var58 = Tools.RepString(var22.substring(6), "_", " ");
  740.                         }
  741.  
  742.                         if (var22.toLowerCase().equals("checked")) {
  743.                            var69 = true;
  744.                         }
  745.                      }
  746.  
  747.                      if (field_6 != this.field_24 * this.field_26) {
  748.                         this.field_20 = true;
  749.                         this.method_5(var1, "", field_6, field_7);
  750.                         field_6 = this.field_24 * this.field_26;
  751.                         field_7 += this.strHeight();
  752.                      }
  753.  
  754.                      if (var36.length() == 0) {
  755.                         var36 = "text";
  756.                      }
  757.  
  758.                      if (var36.equals("hidden") && var7 != null) {
  759.                         var7.addHiddenObject(new HiddenObj(var47, var58));
  760.                      }
  761.  
  762.                      if (var36.equals("text") || var36.equals("password")) {
  763.                         boolean var82 = false;
  764.                         if (var36.equals("password")) {
  765.                            var82 = true;
  766.                         }
  767.  
  768.                         field_7 += this.field_10;
  769.                         this.field_14 = new HotSpot();
  770.                         this.field_14.setBxBy(field_6, field_7);
  771.                         this.field_14.setExEy(field_6 + 80, field_7);
  772.                         TextObj var23 = new TextObj(var47, var58, var82, field_6, field_7);
  773.                         var23.paint(var1);
  774.                         this.field_14.setObj(1, var23, 22);
  775.                         hsvector.addElement(this.field_14);
  776.                         field_7 += 22 + this.field_10;
  777.                         if (var7 != null) {
  778.                            var7.addObjectIndex(hsvector.size() - 1);
  779.                         }
  780.                      }
  781.  
  782.                      if (var36.equals("submit") || var36.equals("reset")) {
  783.                         field_7 += this.field_10;
  784.                         ButtonObj var83 = new ButtonObj(var36, var58, formindex, field_6, field_7);
  785.                         var83.paint(var1);
  786.                         this.field_14 = new HotSpot();
  787.                         this.field_14.setBxBy(field_6, field_7);
  788.                         this.field_14.setExEy(field_6 + var83.getWidth(), field_7);
  789.                         this.field_14.setObj(3, var83, 17);
  790.                         hsvector.addElement(this.field_14);
  791.                         field_7 += 16 + this.field_10;
  792.                      }
  793.  
  794.                      if (var36.equals("radio") || var36.equals("checkbox")) {
  795.                         byte var84 = 1;
  796.                         if (var36.equals("checkbox")) {
  797.                            var84 = 2;
  798.                         }
  799.  
  800.                         ChoiceObj var85 = new ChoiceObj(var84, var47, var58, var69, field_6, field_7);
  801.                         var85.paint(var1);
  802.                         this.field_14 = new HotSpot();
  803.                         this.field_14.setBxBy(field_6, field_7);
  804.                         field_6 += 17;
  805.                         this.field_14.setExEy(field_6, field_7);
  806.                         this.field_14.setObj(4, var85, 13);
  807.                         hsvector.addElement(this.field_14);
  808.                         if (var7 != null) {
  809.                            var7.addObjectIndex(hsvector.size() - 1);
  810.                         }
  811.                      }
  812.                   } else if (var3.startsWith("<select")) {
  813.                      String var35 = "";
  814.                      Vector var46 = this.method_3(var2);
  815.  
  816.                      for(int var57 = 0; var57 < var46.size(); ++var57) {
  817.                         String var68 = (String)var46.elementAt(var57);
  818.                         if (var68.toLowerCase().startsWith("name=")) {
  819.                            var35 = var68.substring(5);
  820.                         }
  821.                      }
  822.  
  823.                      if (field_6 != this.field_24 * this.field_26) {
  824.                         this.field_20 = true;
  825.                         this.method_5(var1, "", field_6, field_7);
  826.                         field_6 = this.field_24 * this.field_26;
  827.                         field_7 += this.strHeight();
  828.                      }
  829.  
  830.                      field_7 += this.field_10;
  831.                      var8 = new SelectObj(var35, field_6, field_7);
  832.                      var11 = "";
  833.                   } else if (var3.startsWith("<option")) {
  834.                      String var34 = "";
  835.                      boolean var45 = false;
  836.                      Vector var56 = this.method_3(var2);
  837.  
  838.                      for(int var67 = 0; var67 < var56.size(); ++var67) {
  839.                         String var77 = (String)var56.elementAt(var67);
  840.                         if (var77.toLowerCase().startsWith("value=")) {
  841.                            var34 = Tools.RepString(var77.substring(6), "_", " ");
  842.                         }
  843.  
  844.                         if (var77.toLowerCase().startsWith("selected")) {
  845.                            var45 = true;
  846.                         }
  847.                      }
  848.  
  849.                      var10 = true;
  850.                      if (var11.length() > 0 && var9 != null) {
  851.                         var9.setValue(var11);
  852.                         if (var8 != null) {
  853.                            var8.addOption(var9);
  854.                         }
  855.  
  856.                         var11 = "";
  857.                      }
  858.  
  859.                      var9 = new OptionObj(var34, var45);
  860.                   } else if (var3.equals("</select>")) {
  861.                      var10 = false;
  862.                      this.field_14 = new HotSpot();
  863.                      this.field_14.setBxBy(field_6, field_7);
  864.                      this.field_14.setExEy(field_6 + 80, field_7);
  865.                      this.field_14.setObj(2, var8, 22);
  866.                      hsvector.addElement(this.field_14);
  867.                      if (var11.length() > 0 && var9 != null) {
  868.                         var9.setValue(var11);
  869.                         if (var8 != null) {
  870.                            var8.addOption(var9);
  871.                            var8.paint(var1);
  872.                         }
  873.  
  874.                         var11 = "";
  875.                      }
  876.  
  877.                      field_7 += 22 + this.field_10;
  878.                      if (var7 != null) {
  879.                         var7.addObjectIndex(hsvector.size() - 1);
  880.                      }
  881.                   } else if (!var3.startsWith("<textarea")) {
  882.                      if (var3.equals("</textarea>")) {
  883.                         var13 = false;
  884.                         var12.setValue(var14);
  885.                         var12.paint(var1);
  886.                         var14 = "";
  887.                         this.field_14 = new HotSpot();
  888.                         this.field_14.setBxBy(field_6, field_7);
  889.                         this.field_14.setExEy(field_6 + 80, field_7);
  890.                         this.field_14.setObj(1, var12, 22);
  891.                         hsvector.addElement(this.field_14);
  892.                         field_7 += 22 + this.field_10;
  893.                         if (var7 != null) {
  894.                            var7.addObjectIndex(hsvector.size() - 1);
  895.                         }
  896.                      } else if (var3.equals("<u>")) {
  897.                         this.field_21 = true;
  898.                         this.field_22 = true;
  899.                      } else if (var3.equals("</u>")) {
  900.                         this.field_21 = false;
  901.                         this.field_22 = false;
  902.                      } else if (var3.equals("<li>") && this.field_24 > 0) {
  903.                         if (field_6 != this.field_24 * this.field_26) {
  904.                            field_6 = this.field_24 * this.field_26;
  905.                            field_7 += this.strHeight();
  906.                         }
  907.  
  908.                         if (this.field_25[this.field_24] >= 0) {
  909.                            int var10002 = this.field_25[this.field_24]++;
  910.                            var1.drawString("" + this.field_25[this.field_24] + ". ", this.field_24 * this.field_26, field_7, 24);
  911.                         } else if (this.field_24 == 1) {
  912.                            var1.fillRoundRect(this.field_24 * this.field_26 - 10, field_7 + 5, 5, 5, 5, 5);
  913.                         } else {
  914.                            var1.fillRect(this.field_24 * this.field_26 - 10, field_7 + 6, 4, 4);
  915.                         }
  916.                      } else if (!var3.equals("<ul>") && !var3.equals("<dir>")) {
  917.                         if (!var3.equals("</ul>") && !var3.equals("</dir>")) {
  918.                            if (var3.equals("<ol>")) {
  919.                               int var33 = this.field_24;
  920.                               if (this.field_24 < 7) {
  921.                                  ++this.field_24;
  922.                                  this.field_25[this.field_24] = 0;
  923.                               }
  924.  
  925.                               if (field_6 != var33 * this.field_26) {
  926.                                  if (this.field_18) {
  927.                                     this.field_20 = true;
  928.                                     this.method_5(var1, "", field_6, field_7);
  929.                                  }
  930.  
  931.                                  field_7 += this.strHeight();
  932.                               }
  933.  
  934.                               field_6 = this.field_24 * this.field_26;
  935.                               this.field_18 = false;
  936.                            } else if (var3.equals("</ol>")) {
  937.                               if (this.field_24 > 0) {
  938.                                  --this.field_24;
  939.                               }
  940.  
  941.                               field_6 = this.field_24 * this.field_26;
  942.                               field_7 += this.strHeight();
  943.                            }
  944.                         } else {
  945.                            if (this.field_24 > 0) {
  946.                               --this.field_24;
  947.                            }
  948.  
  949.                            field_6 = this.field_24 * this.field_26;
  950.                            field_7 += this.strHeight();
  951.                         }
  952.                      } else {
  953.                         int var32 = this.field_24;
  954.                         if (this.field_24 < 7) {
  955.                            ++this.field_24;
  956.                            this.field_25[this.field_24] = -1;
  957.                         }
  958.  
  959.                         if (field_6 != var32 * this.field_26) {
  960.                            if (this.field_18) {
  961.                               this.field_20 = true;
  962.                               this.method_5(var1, "", field_6, field_7);
  963.                            }
  964.  
  965.                            field_7 += this.strHeight();
  966.                         }
  967.  
  968.                         field_6 = this.field_24 * this.field_26;
  969.                         this.field_18 = false;
  970.                      }
  971.                   } else {
  972.                      String var31 = "";
  973.                      Vector var44 = this.method_3(var2);
  974.  
  975.                      for(int var55 = 0; var55 < var44.size(); ++var55) {
  976.                         String var66 = (String)var44.elementAt(var55);
  977.                         if (var66.toLowerCase().startsWith("name=")) {
  978.                            var31 = var66.substring(5);
  979.                         }
  980.                      }
  981.  
  982.                      if (field_6 != this.field_24 * this.field_26) {
  983.                         this.field_20 = true;
  984.                         this.method_5(var1, "", field_6, field_7);
  985.                         field_6 = this.field_24 * this.field_26;
  986.                         field_7 += this.strHeight();
  987.                      }
  988.  
  989.                      field_7 += this.field_10;
  990.                      var12 = new TextObj(var31, "", false, field_6, field_7);
  991.                      var13 = true;
  992.                      var14 = "";
  993.                   }
  994.                } else {
  995.                   if (var2.indexOf(38) >= 0) {
  996.                      int var17;
  997.                      int var29;
  998.                      for(var29 = 0; (var29 = var2.indexOf("&#")) != -1; var2 = var2.substring(0, var29) + "*" + var2.substring(var17 + 1)) {
  999.                         var17 = var29;
  1000.                         int var18 = var2.length();
  1001.  
  1002.                         for(int var19 = var29; var19 < var18; ++var19) {
  1003.                            if (var2.charAt(var19) == ';') {
  1004.                               var17 = var19;
  1005.                               break;
  1006.                            }
  1007.                         }
  1008.  
  1009.                         if (var17 == var29) {
  1010.                            break;
  1011.                         }
  1012.                      }
  1013.  
  1014.                      var2 = Tools.RepString(var2, "©", "(c)");
  1015.                      var2 = Tools.RepString(var2, "&", "(c)");
  1016.                      var2 = Tools.RepString(var2, "<", "<");
  1017.                      var2 = Tools.RepString(var2, ">", ">");
  1018.                      var2 = Tools.RepString(var2, " ", " ");
  1019.                   }
  1020.  
  1021.                   if (var10) {
  1022.                      if (var11.length() > 0) {
  1023.                         var11 = var11 + " ";
  1024.                      }
  1025.  
  1026.                      var11 = var11 + var2;
  1027.                   } else {
  1028.                      String var4;
  1029.                      if (var13) {
  1030.                         if (var14.length() > 0) {
  1031.                            var14 = var14 + " ";
  1032.                         }
  1033.  
  1034.                         var14 = var14 + var2;
  1035.                      } else {
  1036.                         for(int var6 = 1; (var4 = Tools.GetTokenZ(var2, var6, ' ', true)) != null; ++var6) {
  1037.                            int var5 = this.strWidth(var4);
  1038.                            if (field_6 + slen + var5 < this.CanvasWidth) {
  1039.                               if (field_6 != this.field_24 * this.field_26) {
  1040.                                  var4 = " " + var4;
  1041.                                  var5 += slen;
  1042.                               }
  1043.  
  1044.                               this.method_5(var1, var4, field_6, field_7);
  1045.                               field_6 += var5;
  1046.                            } else {
  1047.                               int var30 = var4.length();
  1048.  
  1049.                               while(var30 > 0) {
  1050.                                  --var30;
  1051.                                  String var43 = var4.substring(0, var30);
  1052.                                  if (field_6 != this.field_24 * this.field_26) {
  1053.                                     var43 = " " + var43;
  1054.                                  }
  1055.  
  1056.                                  int var54 = this.strWidth(var43);
  1057.                                  if (field_6 + var54 < this.CanvasWidth) {
  1058.                                     this.field_20 = true;
  1059.                                     this.method_5(var1, var43, field_6, field_7);
  1060.                                     var4 = var4.substring(var30);
  1061.                                     field_6 = this.field_24 * this.field_26;
  1062.  
  1063.                                     while((var5 = this.strWidth(var4)) > this.CanvasWidth) {
  1064.                                        int var65 = var4.length();
  1065.  
  1066.                                        while(var65 > 0) {
  1067.                                           --var65;
  1068.                                           String var20 = var4.substring(0, var65);
  1069.                                           int var21 = this.strWidth(var20);
  1070.                                           if (field_6 + var21 <= this.CanvasWidth) {
  1071.                                              this.field_20 = true;
  1072.                                              field_6 = this.field_24 * this.field_26;
  1073.                                              field_7 += this.strHeight();
  1074.                                              this.method_5(var1, var20, field_6, field_7);
  1075.                                              var4 = var4.substring(var65);
  1076.                                              break;
  1077.                                           }
  1078.                                        }
  1079.                                     }
  1080.                                     break;
  1081.                                  }
  1082.                               }
  1083.  
  1084.                               if (this.field_18) {
  1085.                                  this.field_20 = true;
  1086.                                  this.method_5(var1, "", field_6, field_7);
  1087.                               }
  1088.  
  1089.                               field_6 = this.field_24 * this.field_26;
  1090.                               field_7 += this.strHeight();
  1091.                               this.method_5(var1, var4, field_6, field_7);
  1092.                               field_6 += var5;
  1093.                            }
  1094.                         }
  1095.                      }
  1096.                   }
  1097.                }
  1098.             }
  1099.          }
  1100.       }
  1101.  
  1102.       field_7 += this.strHeight();
  1103.    }
  1104. }
  1105.